package com.yiyibook.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Pattern;
import java.util.Date;

/**
 * 图书基本信息 实体
 *
 * @author yi.wu
 * @date 2019-10-14
 */
@Data
public class Book {

    /**
     * 图书id
     */
    private Integer bookId;

    /**
     * 图书编号
     */
    private String bookNum;

    /**
     * 图书小类id
     */
    private Integer smallStyleId;

    /**
     * 图书图片
     */
    private String bookImage;

    /**
     * 图书简介
     */
    @Pattern(regexp = "^(?=.*[\\w\\u4E00-\\u9FA5])[\\S]{4,20}$", message = "图书简介必须由最少1个非特殊字符组成，长度4-20")
    private String introduction;

    /**
     * 图书作者
     */
    private String author;

    /**
     * 图书库存数量
     */
    private Long stock;

    /**
     * 图书出版社
     */
    private String publishingCompany;

    /**
     * 图书出版日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date publishingDate;

    /**
     * 图书单价
     */
    private Long unitPrice;

    /**
     * 图书被访问次数
     */
    private Integer visitedNumber;

    /**
     * 图书第一次创建时间
     */
    private Date firstCreateDate;

    /**
     * 图书最近一次修改信息时间
     */
    private Date lastUpdateDate;

    /**
     * 图书标题
     */
    @Pattern(regexp = "^[\\w\\u4E00-\\u9FA5]{1,20}$",message = "图书标题必须由1-20个非特殊字符组成")
    private String bookTitle;

    // 非数据库字段
    /**
     * 图书大类id
     */
    private Integer bigStyleId;

    /**
     * 图书大类名称
     */
    private String bigStyleName;

    /**
     * 图书小类名称
     */
    private String smallStyleName;
}